function SmoothY=fastsmooth(Y,smoothwidth)%  fastsmooth(Y,w) smooths vector Y by triangular% smooth of width = smoothwidth. Works well with signals up to % 100,000 points in length and smooth widths up to 1000 points. % Faster than tsmooth for smooth widths above 600 points.% Example: fastsmooth([0 0 0 0 9 0 0 0 0],3) yields [0 0 1 2 3 2 1 0 0]%  T. C. O'Haver, 2006.w=round(smoothwidth);SumPoints=sum(Y(1:w));s=zeros(size(Y));halfw=round(w/2);for k=1:length(Y)-w,   s(k+halfw-1)=SumPoints;   SumPoints=SumPoints-Y(k);   SumPoints=SumPoints+Y(k+w);ends=s./w;SumPoints=sum(s(1:w));SmoothY=zeros(size(s));for k=1:length(s)-w,   SmoothY(k+halfw-1)=SumPoints;   SumPoints=SumPoints-s(k);   SumPoints=SumPoints+s(k+w);endSmoothY=SmoothY./w;